/**
 * @param {number} a
 * @param {number} b
 * @return {number}
 */
var add = function (a, b) {

	while (b) {
		// 进位
		let carry = (a & b) << 1;
		// 不进位加法
		a = a ^ b;
		// 重复加上进位
		b = carry;
	}
	// 当b为0时，直接返回a
	return a;
};